package exception;
/**
 * finally块是异常处理机制的最后一块
 * finally可以保证只要程序执行到try块中，无论try中的代码是否发生异常，finally中的代码必定执行
 * 因此通常我们会将释放资源这类操作放在finally块中以保证最后异常执行
 */
public class FinallyDemo {
    public static void main(String[] args) {
        System.out.println("程序开始了");
        try {
            String str=null;
            //
            System.out.println(str.length());

            //分两种情况
            // 第一种没有出错就先执行finally在return 就不会执行System.out.println("程序结束了");
            //第二种出错就先执行finally 跳过return 最后执行System.out.println("程序结束了");
            return;//哪怕return了，也会先执行finally中的代码再结束方法
            //程序开始了
            //3
            //finally的代码执行了
        }catch (Exception e){
            System.out.println("出错了");
        }finally {
            System.out.println("finally的代码执行了");
        }

        System.out.println("程序结束了");
    }
}
